#include "inserir.h"

/** @brief Funcao para atualizar os arquivos de pk's, alem de carregar as sks na memoria

  	@param obras O vetor que sera adicionado a chave primaria (nrr.dat)
  	@param sk_titulo Chave secundaria para titulo.
	@param sk_autor  Chave secundaria para autor.
	@param sk_tipo Chave secundaria para tipo.
	@param sk_ano Chave secundaria para ano.
	@param tamanho A quantidade de itens inseridos no obras 
  	@param tautor A quantidade de itens inseridos no sk_autor.
	@param ttitulo  A quantidade de itens inseridos no sk_titulo.
	@param ttipo  A quantidade de itens inseridos no sk_tipo.
	@param tano  A quantidade de itens inseridos no sk_ano.

                                         */

void atualiza_arquivos(pNo_PK *obras, pNo_PK *sk_titulo, pNo_PK *sk_autor, pNo_PK *sk_tipo, pNo_PK *sk_ano, int *tamanho, int *tautor, int *ttitulo, int *ttipo, int *tano);

/** @brief Funcao que escreve os arquivos pks 

 	@param origem Base de dados.
 	@param destino Pk correspondente.
  	@param atual Posicao atual do arquivo destino.
                                         */

void Writefile(FILE *origem, FILE *destino, int atual);

/** @brief Funcao para completar espacos 

	@param nome Str a ser completada.
  	@param tamanho Tamnho da str.
                                         */

void Fillblanks(char nome[], int tamanho);

/** @brief Funcao adicionar os registros de pk e sk na memoria em forma de vetor.

  	@param obras O vetor a ser adicionado a obra.
  	@param titulo Str sobre a obra (titulo, autor, tipo, ano).
	@param nrr  Seu nrr.
	@param tamanho Tamanho da str 
	@param vetor Posicao do vetor.
	
	@return Retorna o novo tamanho 
	
	@retval tamanho Nao foi adicionado
	@retval tamanho+1 Foi adicionado
                                         */

int Le_PK(pNo_PK *obras, char *titulo, int nrr, int tamanho, int vetor);

/** @brief Funcao para gravar as informacoes dos vetores de pk e sk em arquivos (nrr.dat e sk_*.dat).

	@param string  O nome do arquivo a ser criado.
  	@param tamanho Quantos registros o vetor possui.
	@param obras Vetor correspondente.
                                         */

void GravaArray(char string[], int tamanho, pNo_PK obras);

/** @brief Funcao para transformar uma str em maiusculo.

	@param s  A string a ser transformado.
                                         */


void Str_toupper(char *s);

/**
\details This function ....
\author Fulano Ciclano Beltrano
\date 15/02/2008   
\param a The length ...
\param b The width ...
\param b The height ... 
\return vol The voulem ...
\note Be sure that:
- length > 0;
- width > 0;
- height > 0.
\sa calculate_area, calculate_size
*/ 

/** @brief Funcao adicionar os registros de pk e sk na memoria em forma de vetor.

  	@param obras O vetor a ser adicionado a obra.
  	@param origem A base de dados.
	@param destino  O arquivo a ser gravado (pk_*.dat)
	@param tamanhostr Tamanho da str que esta sendo inserida
	@param indice Indice de nrr.
	@param atual A posicao atual do arquivo destino.
  	@param tamanho Tamanho que esta os vetores sks ate o momento
	@param contador  Posicao atual da base.
	
	@return Retorna o tamanho atual atualizado.
	
	@retval atual + tamanhostr;
                                         */
int Secondary(pNo_PK *obras, FILE *origem, FILE *destino, int tamanhostr,int *indice, int atual, int *tamanho, int contador) ;
